package com.lsc.clientfacade;

import java.io.*;
import java.net.*;
import java.util.ArrayList;
import java.util.List;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;

import com.lsc.model.Composant;
import com.lsc.model.produit;
import com.lsc.model.phase;
import java.text.DateFormat;
import java.text.ParseException;
import java.util.Locale;

public class ClientFacade {
	
	private String url=null;
	private String charset="UTF-8";
	private boolean loggedIn=false;
	
	/**
	 * établit la session
	 * @param pUrl l'url du web service
	 * @param pUser le nom d'utilisateur
	 * @param pPass le mot de passe
	 * @return vrai si ok  faux sinon
	 */
	public boolean login(String pUrl, String pUser, String pPass){
		this.url=pUrl;
		boolean success=false;
		
		
		// on configure le gestionaire de cookies global , une fois pour toutes.
		CookieHandler.setDefault(new CookieManager(null, CookiePolicy.ACCEPT_ALL));
		//(ne pas copier cette ligne pour le logout)
                
                
		//on prepare la partie query de la requete, on encodera les params avec le bon charset
		String query=null; 
		try {
			query="action=login&user="+URLEncoder.encode(pUser,charset)+"&pwd="+URLEncoder.encode(pPass,charset);
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		
		//on envoie la requete
		
		try {
			URLConnection connection = new URL(url).openConnection();
			connection.setDoOutput(true); // configure la requete en POST.
			connection.setRequestProperty("Accept-Charset", charset);
			connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=" + charset);
			OutputStream output = null;
		    output = connection.getOutputStream();
		    output.write(query.getBytes(charset));
		    //la requête est effectivement envoyée des qu'on tente de récupérer la reponse
		    InputStream response = connection.getInputStream();
		    //prod code : WSResponse resp=new WSResponse(response);	
		    //debug code:
		    WSResponse resp=WSResponse.makeResponseDebug(response);
		    if (resp.getStatusCode().equals("0")){
		    	loggedIn=true;
		    	success=true;
		    }
		    response.close();
		} catch (IOException x) {
		     x.printStackTrace();
		}
		
		return success;
		
	}
	
	/**
	 * recupere sur le web service une liste de tous les composants
	 * on doit s'être loggué avant d'appeler cette méthode
	 * @return une liste de tous les composants
	 * @throws SessionNotLoggedInException 
	 */
	public List<Composant> getComposants() throws SessionNotLoggedInException{
		List<Composant> lc=null;
		if (!loggedIn){
			throw new SessionNotLoggedInException("cette methode doit être appelee dans le cadre d'une session établie");
		}
		
		//on prepare la partie query de la requete
                //ici il n'y a pas de parametres, si il y en a se referer a la methode login
		String query="action=getComposants";
				
		//on crée puis envoie la requete
		try {
	
                            /* le code suivant ne change pas selon les methodes
                             * il s'occupe d'envoyer la requete et de creer l'objet wsresponse
                             * qui contient le dom
                             */
                            URLConnection connection = new URL(url).openConnection();
                            connection.setDoOutput(true); // configure la requete en POST.
                            connection.setRequestProperty("Accept-Charset", charset);
                            connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=" + charset);
                            OutputStream output = null;
			    output = connection.getOutputStream();
			    output.write(query.getBytes(charset));
			    //la requête est effectivement envoyée des qu'on tente de récupérer la reponse
			    InputStream response = connection.getInputStream();
			    //prod code : WSResponse resp=new WSResponse(response);	
			    //debug code:
			    WSResponse resp=WSResponse.makeResponseDebug(response);
			    response.close();
                            /*
                             * fin du code de recuperation du dom
                             */
                            
                            
			    /* code d'exploitation du dom et de generation des instances de classes du modele
                             * (a coder dans le package com.lsc.model)
                             */
			    if (resp.getStatusCode().equals("1")){
			    	lc=new ArrayList<Composant>();
			    	Document dom=resp.getDom();
				    NodeList nl=dom.getElementsByTagName("composant");
				    for (int i=0; i<nl.getLength(); i++){
				    	Element e=(Element)nl.item(i);
				    	Composant c = new Composant();
				    	
				    	Element sousElt;
				    	sousElt=(Element) e.getElementsByTagName("idcomp").item(0);
				    	c.setId(sousElt.getTextContent());
				    	
				    	sousElt=(Element) e.getElementsByTagName("nomcomp").item(0);
				    	c.setNom(sousElt.getTextContent());
				    	
				    	sousElt=(Element) e.getElementsByTagName("desccomp").item(0);
				    	c.setDesc(sousElt.getTextContent());
				    	
				    	
				    	sousElt=(Element) e.getElementsByTagName("imgcomp").item(0);
				    	c.setImg(sousElt.getTextContent());
				    	
				    	sousElt=(Element) e.getElementsByTagName("qtestockcomp").item(0);
				    	c.setQteStock(Integer.parseInt(sousElt.getTextContent()));
				    	
                                        
				    	sousElt=(Element) e.getElementsByTagName("seuilalertecomp").item(0);
				    	c.setQteAlerte(Integer.parseInt(sousElt.getTextContent()));
				    	
                                        //ajout du composant a la liste resultat
				    	lc.add(c);
				    }
			    }
		} catch (IOException x) {
			     x.printStackTrace();
		}
		return lc;
	}
        
                    public List<produit> getProduitsFabriques() throws SessionNotLoggedInException, ParseException{
		List<produit> lp=null;
		if (!loggedIn){
			throw new SessionNotLoggedInException("cette methode doit être appelee dans le cadre d'une session établie");
		}
		
		//on prepare la partie query de la requete
                //ici il n'y a pas de parametres, si il y en a se referer a la methode login
		String query="action=getProduitsFabriques";
				
		//on crée puis envoie la requete
		try {
	
                            /* le code suivant ne change pas selon les methodes
                             * il s'occupe d'envoyer la requete et de creer l'objet wsresponse
                             * qui contient le dom
                             */
                            URLConnection connection = new URL(url).openConnection();
                            connection.setDoOutput(true); // configure la requete en POST.
                            connection.setRequestProperty("Accept-Charset", charset);
                            connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=" + charset);
                            OutputStream output = null;
			    output = connection.getOutputStream();
			    output.write(query.getBytes(charset));
			    //la requête est effectivement envoyée des qu'on tente de récupérer la reponse
			    InputStream response = connection.getInputStream();
			    //prod code : WSResponse resp=new WSResponse(response);	
			    //debug code:
			    WSResponse resp=WSResponse.makeResponseDebug(response);
			    response.close();
                            /*
                             * fin du code de recuperation du dom
                             */
                            
                            
			    /* code d'exploitation du dom et de generation des instances de classes du modele
                             * (a coder dans le package com.lsc.model)
                             */
                            
                            if (resp.getStatusCode().equals("1")){
			    	lp=new ArrayList<produit>();
			    	Document dom=resp.getDom();
				    NodeList nl=dom.getElementsByTagName("produit");
				    for (int i=0; i<nl.getLength(); i++){
				    	Element e=(Element)nl.item(i);
				    	produit p = new produit();
				    	
				    	Element sousElt;
				    	sousElt=(Element) e.getElementsByTagName("idprod").item(0);
				    	p.setidprod(sousElt.getTextContent());
				    	
				    	sousElt=(Element) e.getElementsByTagName("nomprod").item(0);
				    	p.setnomprod(sousElt.getTextContent());
				    	
				    	sousElt=(Element) e.getElementsByTagName("descprod").item(0);
				    	p.setdescprod(sousElt.getTextContent());
				    	
				    	sousElt=(Element) e.getElementsByTagName("imgprod").item(0);
				    	p.setimgprod(sousElt.getTextContent());
				    	
				    	sousElt=(Element) e.getElementsByTagName("qtestockprod").item(0);
				    	p.setqtestockprod(Integer.parseInt(sousElt.getTextContent()));
				    					    					    	
				    	sousElt=(Element) e.getElementsByTagName("seuilalerteprod").item(0);
				    	p.setqtealerteprod(Integer.parseInt(sousElt.getTextContent()));
                                        
                                        sousElt=(Element) e.getElementsByTagName("typeprod").item(0);
				    	p.settypeprod(sousElt.getTextContent());
                                        
                                        sousElt=(Element) e.getElementsByTagName("prixventehtprod").item(0);
				    	p.setprixprod(Float.parseFloat(sousElt.getTextContent()));
                                        
                                        sousElt=(Element) e.getElementsByTagName("versionprod").item(0);
				    	p.setversionprod(sousElt.getTextContent());
                                        
                                        sousElt=(Element) e.getElementsByTagName("datecreaprod").item(0);
                                        p.setdatecreationprod(sousElt.getTextContent());
                                        
                                        p.setnomenclature(getComposantsParProduit(p.getidprod()));
				    	
                                        //ajout du composant a la liste resultat
				    	lp.add(p);
				    }
			    }
                    }
                catch (IOException x) {
			     x.printStackTrace();
		}
		return lp;
	}
        
        public List<phase> getPhasesParProduit(String idprod) throws SessionNotLoggedInException, ParseException{
		List<phase> ln=null;
		if (!loggedIn){
			throw new SessionNotLoggedInException("cette methode doit être appelee dans le cadre d'une session établie");
		}
		
		//on prepare la partie query de la requete
                //ici il n'y a pas de parametres, si il y en a se referer a la methode login
		String query="action=getPhasesParProduit&idProdFab="+idprod;
				
		//on crée puis envoie la requete
		try {
	
                            /* le code suivant ne change pas selon les methodes
                             * il s'occupe d'envoyer la requete et de creer l'objet wsresponse
                             * qui contient le dom
                             */
                            URLConnection connection = new URL(url).openConnection();
                            connection.setDoOutput(true); // configure la requete en POST.
                            connection.setRequestProperty("Accept-Charset", charset);
                            connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=" + charset);
                            OutputStream output = null;
			    output = connection.getOutputStream();
			    output.write(query.getBytes(charset));
			    //la requête est effectivement envoyée des qu'on tente de récupérer la reponse
			    InputStream response = connection.getInputStream();
			    //prod code : WSResponse resp=new WSResponse(response);	
			    //debug code:
			    WSResponse resp=WSResponse.makeResponseDebug(response);
			    response.close();
                            /*
                             * fin du code de recuperation du dom
                             */
                            
                            
			    /* code d'exploitation du dom et de generation des instances de classes du modele
                             * (a coder dans le package com.lsc.model)
                             */
                            
                            if (resp.getStatusCode().equals("1")){
			    	ln=new ArrayList<phase>();
			    	Document dom=resp.getDom();
				    NodeList nl=dom.getElementsByTagName("phase");
				    for (int i=0; i<nl.getLength(); i++){
				    	Element e=(Element)nl.item(i);
				    	phase n = new phase();
				    	
				    	Element sousElt;
				    	sousElt=(Element) e.getElementsByTagName("nOrdrePhase").item(0);
				    	n.setid(sousElt.getTextContent());
				    	
				    	sousElt=(Element) e.getElementsByTagName("PRODUIT_FABRIQUE_idProd").item(0);
				    	n.setPhasesParProduit(sousElt.getTextContent());
				    	
				    	sousElt=(Element) e.getElementsByTagName("descPhase").item(0);
				    	n.setdesc(sousElt.getTextContent());
				    	
				    	sousElt=(Element) e.getElementsByTagName("imgPhase").item(0);
				    	n.setimg(sousElt.getTextContent());
                                        
                                        sousElt=(Element) e.getElementsByTagName("dureePhase").item(0);
                                        n.setduree(sousElt.getTextContent());
				    	
                                        //ajout du composant a la liste resultat
				    	ln.add(n);
				    }
			    }
                    }
                catch (IOException x) {
			     x.printStackTrace();
		}
		return ln;
	}
        
        
        public List<Composant> getComposantsParProduit(String idprod) throws SessionNotLoggedInException, ParseException{
		List<Composant> lc=null;
		if (!loggedIn){
			throw new SessionNotLoggedInException("cette methode doit être appelee dans le cadre d'une session établie");
		}
		
		//on prepare la partie query de la requete
                //ici il n'y a pas de parametres, si il y en a se referer a la methode login
		String query="action=getComposantsParProduit&idProduitFab="+idprod;
				
		//on crée puis envoie la requete
		try {
	
                            /* le code suivant ne change pas selon les methodes
                             * il s'occupe d'envoyer la requete et de creer l'objet wsresponse
                             * qui contient le dom
                             */
                            URLConnection connection = new URL(url).openConnection();
                            connection.setDoOutput(true); // configure la requete en POST.
                            connection.setRequestProperty("Accept-Charset", charset);
                            connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=" + charset);
                            OutputStream output = null;
			    output = connection.getOutputStream();
			    output.write(query.getBytes(charset));
			    //la requête est effectivement envoyée des qu'on tente de récupérer la reponse
			    InputStream response = connection.getInputStream();
			    //prod code : WSResponse resp=new WSResponse(response);	
			    //debug code:
			    WSResponse resp=WSResponse.makeResponseDebug(response);
			    response.close();
                            /*
                             * fin du code de recuperation du dom
                             */
                            
                            
			    /* code d'exploitation du dom et de generation des instances de classes du modele
                             * (a coder dans le package com.lsc.model)
                             */
                            
                            if (resp.getStatusCode().equals("1")){
			    	lc=new ArrayList<Composant>();
			    	Document dom=resp.getDom();
				    NodeList nl=dom.getElementsByTagName("composant");
				    for (int i=0; i<nl.getLength(); i++){
				    	Element e=(Element)nl.item(i);
				    	Composant c = new Composant();
				    	
				    	Element sousElt;
				    	sousElt=(Element) e.getElementsByTagName("idcomp").item(0);
				    	c.setId(sousElt.getTextContent());
				    	
				    	sousElt=(Element) e.getElementsByTagName("nomcomp").item(0);
				    	c.setNom(sousElt.getTextContent());
				    	
				    	sousElt=(Element) e.getElementsByTagName("desccomp").item(0);
				    	c.setDesc(sousElt.getTextContent());
				    	
				    	
				    	sousElt=(Element) e.getElementsByTagName("imgcomp").item(0);
				    	c.setImg(sousElt.getTextContent());
				    	
				    	sousElt=(Element) e.getElementsByTagName("qtestockcomp").item(0);
				    	c.setQteStock(Integer.parseInt(sousElt.getTextContent()));
				    					    					    	
				    	sousElt=(Element) e.getElementsByTagName("seuilalertecomp").item(0);
				    	c.setQteAlerte(Integer.parseInt(sousElt.getTextContent()));
				    	
                                        //ajout du composant a la liste resultat
				    	lc.add(c);
				    }
			    }
		} catch (IOException x) {
			     x.printStackTrace();
		}
		return lc;
	}
        
        public produit getProduitFabriqueID(String idprod) throws SessionNotLoggedInException, ParseException{
		produit p=new produit();
		if (!loggedIn){
			throw new SessionNotLoggedInException("cette methode doit être appelee dans le cadre d'une session établie");
		}
		
		//on prepare la partie query de la requete
                //ici il n'y a pas de parametres, si il y en a se referer a la methode login
		String query="action=getProduitFabriqueID&id="+idprod;
				
		//on crée puis envoie la requete
		try {
	
                            /* le code suivant ne change pas selon les methodes
                             * il s'occupe d'envoyer la requete et de creer l'objet wsresponse
                             * qui contient le dom
                             */
                            URLConnection connection = new URL(url).openConnection();
                            connection.setDoOutput(true); // configure la requete en POST.
                            connection.setRequestProperty("Accept-Charset", charset);
                            connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=" + charset);
                            OutputStream output = null;
			    output = connection.getOutputStream();
			    output.write(query.getBytes(charset));
			    //la requête est effectivement envoyée des qu'on tente de récupérer la reponse
			    InputStream response = connection.getInputStream();
			    //prod code : WSResponse resp=new WSResponse(response);	
			    //debug code:
			    WSResponse resp=WSResponse.makeResponseDebug(response);
			    response.close();
                            /*
                             * fin du code de recuperation du dom
                             */
                            
                            
			    /* code d'exploitation du dom et de generation des instances de classes du modele
                             * (a coder dans le package com.lsc.model)
                             */
                            
                            if (resp.getStatusCode().equals("1")){
			    	Document dom=resp.getDom();
				    NodeList nl=dom.getElementsByTagName("produit");
				    for (int i=0; i<nl.getLength(); i++){
				    	Element e=(Element)nl.item(i);
				    	
				    	Element sousElt;
				    	sousElt=(Element) e.getElementsByTagName("idprod").item(0);
				    	p.setidprod(sousElt.getTextContent());
				    	
				    	sousElt=(Element) e.getElementsByTagName("typeprod").item(0);
				    	p.settypeprod(sousElt.getTextContent());
				    	
				    	sousElt=(Element) e.getElementsByTagName("nomprod").item(0);
				    	p.setnomprod(sousElt.getTextContent());
				    	
				    	
				    	sousElt=(Element) e.getElementsByTagName("descprod").item(0);
				    	p.setdescprod(sousElt.getTextContent());
                                        
                                        sousElt=(Element) e.getElementsByTagName("imgprod").item(0);
				    	p.setimgprod(sousElt.getTextContent());
				    	
				    	sousElt=(Element) e.getElementsByTagName("qtestockprod").item(0);
				    	p.setqtestockprod(Integer.parseInt(sousElt.getTextContent()));
				    					    					    	
				    	sousElt=(Element) e.getElementsByTagName("seuilalerteprod").item(0);
				    	p.setqtealerteprod(Integer.parseInt(sousElt.getTextContent()));
                                        
                                        sousElt=(Element) e.getElementsByTagName("prixventehtprod").item(0);
				    	p.setprixprod(Float.parseFloat(sousElt.getTextContent()));
                                        
                                        sousElt=(Element) e.getElementsByTagName("versionprod").item(0);
				    	p.setversionprod(sousElt.getTextContent());
                                        
                                        sousElt=(Element) e.getElementsByTagName("datecreaprod").item(0);
				    	p.setdatecreationprod(sousElt.getTextContent());
				    	
                                        //ajout du composant a la liste resultat
				    }
			    }
		} catch (IOException x) {
			     x.printStackTrace();
		}
		return p;
	}
        
        public void updateProduitFabrique(String idprod,int nbprod) throws SessionNotLoggedInException, ParseException{
		produit p=getProduitFabriqueID(idprod);
                int nouveauStock=p.getqtestockprod()+nbprod;
		if (!loggedIn){
			throw new SessionNotLoggedInException("cette methode doit être appelee dans le cadre d'une session établie");
		}
		
		//on prepare la partie query de la requete
                //ici il n'y a pas de parametres, si il y en a se referer a la methode login
		String query="action=updateProduitFabrique&id="+p.getidprod()+"&nom="+p.getnomprod()+"&desc="+p.getdescprod()+"&img="+p.getimgprod()+"&qtStock="+nouveauStock+"&qtAlerte="+p.getqtealerteprod()+"&pxVente="+p.getprixprod()+"&version="+p.getversionprod()+"&dateCreation="+p.getdatecreationprod();
				
		//on crée puis envoie la requete
		try {
	
                            /* le code suivant ne change pas selon les methodes
                             * il s'occupe d'envoyer la requete et de creer l'objet wsresponse
                             * qui contient le dom
                             */
                            URLConnection connection = new URL(url).openConnection();
                            connection.setDoOutput(true); // configure la requete en POST.
                            connection.setRequestProperty("Accept-Charset", charset);
                            connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=" + charset);
                            OutputStream output = null;
			    output = connection.getOutputStream();
			    output.write(query.getBytes(charset));
			    //la requête est effectivement envoyée des qu'on tente de récupérer la reponse
			    InputStream response = connection.getInputStream();
			    //prod code : WSResponse resp=new WSResponse(response);	
			    //debug code:
			    WSResponse resp=WSResponse.makeResponseDebug(response);
			    response.close();
                            /*
                             * fin du code de recuperation du dom
                             */
                            
		} catch (IOException x) {
			     x.printStackTrace();
		}
	}
        
        public Composant getComposantID(String idcomp) throws SessionNotLoggedInException, ParseException{
		Composant c=new Composant();
		if (!loggedIn){
			throw new SessionNotLoggedInException("cette methode doit être appelee dans le cadre d'une session établie");
		}
		
		//on prepare la partie query de la requete
                //ici il n'y a pas de parametres, si il y en a se referer a la methode login
		String query="action=getComposantID&id="+idcomp;
				
		//on crée puis envoie la requete
		try {
	
                            /* le code suivant ne change pas selon les methodes
                             * il s'occupe d'envoyer la requete et de creer l'objet wsresponse
                             * qui contient le dom
                             */
                            URLConnection connection = new URL(url).openConnection();
                            connection.setDoOutput(true); // configure la requete en POST.
                            connection.setRequestProperty("Accept-Charset", charset);
                            connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=" + charset);
                            OutputStream output = null;
			    output = connection.getOutputStream();
			    output.write(query.getBytes(charset));
			    //la requête est effectivement envoyée des qu'on tente de récupérer la reponse
			    InputStream response = connection.getInputStream();
			    //prod code : WSResponse resp=new WSResponse(response);	
			    //debug code:
			    WSResponse resp=WSResponse.makeResponseDebug(response);
			    response.close();
                            /*
                             * fin du code de recuperation du dom
                             */
                            
                            
			    /* code d'exploitation du dom et de generation des instances de classes du modele
                             * (a coder dans le package com.lsc.model)
                             */
                            
                            if (resp.getStatusCode().equals("1")){
			    	Document dom=resp.getDom();
				    NodeList nl=dom.getElementsByTagName("composant");
				    for (int i=0; i<nl.getLength(); i++){
				    	Element e=(Element)nl.item(i);
				    	
				    	Element sousElt;
				    	sousElt=(Element) e.getElementsByTagName("idcomp").item(0);
				    	c.setId(sousElt.getTextContent());
				    	
				    	sousElt=(Element) e.getElementsByTagName("nomcomp").item(0);
				    	c.setNom(sousElt.getTextContent());
				
				    	sousElt=(Element) e.getElementsByTagName("desccomp").item(0);
				    	c.setDesc(sousElt.getTextContent());
                                        
                                        sousElt=(Element) e.getElementsByTagName("imgcomp").item(0);
				    	c.setImg(sousElt.getTextContent());
				    	
				    	sousElt=(Element) e.getElementsByTagName("qtestockcomp").item(0);
				    	c.setQteStock(Integer.parseInt(sousElt.getTextContent()));
				    					    					    	
				    	sousElt=(Element) e.getElementsByTagName("seuilalertecomp").item(0);
				    	c.setQteAlerte(Integer.parseInt(sousElt.getTextContent()));
				    	
                                        //ajout du composant a la liste resultat
				    }
			    }
		} catch (IOException x) {
			     x.printStackTrace();
		}
		return c;
	}
        
        public void updateComposant(String idcomp,int nbcomp) throws SessionNotLoggedInException, ParseException{
		Composant c=getComposantID(idcomp);
                int nouveauStock=c.getQteStock()-nbcomp;
		if (!loggedIn){
			throw new SessionNotLoggedInException("cette methode doit être appelee dans le cadre d'une session établie");
		}
		
		//on prepare la partie query de la requete
                //ici il n'y a pas de parametres, si il y en a se referer a la methode login
		String query="action=updateComposant&id="+c.getId()+"&nom="+c.getNom()+"&desc="+c.getDesc()+"&img="+c.getImg()+"&qtStock="+nouveauStock+"&qtAlerte="+c.getQteAlerte();
				
		//on crée puis envoie la requete
		try {
	
                            /* le code suivant ne change pas selon les methodes
                             * il s'occupe d'envoyer la requete et de creer l'objet wsresponse
                             * qui contient le dom
                             */
                            URLConnection connection = new URL(url).openConnection();
                            connection.setDoOutput(true); // configure la requete en POST.
                            connection.setRequestProperty("Accept-Charset", charset);
                            connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=" + charset);
                            OutputStream output = null;
			    output = connection.getOutputStream();
			    output.write(query.getBytes(charset));
			    //la requête est effectivement envoyée des qu'on tente de récupérer la reponse
			    InputStream response = connection.getInputStream();
			    //prod code : WSResponse resp=new WSResponse(response);	
			    //debug code:
			    WSResponse resp=WSResponse.makeResponseDebug(response);
			    response.close();
                            /*
                             * fin du code de recuperation du dom
                             */
                            
		} catch (IOException x) {
			     x.printStackTrace();
		}
	}
        
        public void alimComposant(String idcomp,int nbcomp) throws SessionNotLoggedInException, ParseException{
		Composant c=getComposantID(idcomp);
                int nouveauStock=c.getQteStock()+nbcomp;
		if (!loggedIn){
			throw new SessionNotLoggedInException("cette methode doit être appelee dans le cadre d'une session établie");
		}
		
		//on prepare la partie query de la requete
                //ici il n'y a pas de parametres, si il y en a se referer a la methode login
		String query="action=updateComposant&id="+c.getId()+"&nom="+c.getNom()+"&desc="+c.getDesc()+"&img="+c.getImg()+"&qtStock="+nouveauStock+"&qtAlerte="+c.getQteAlerte();
				
		//on crée puis envoie la requete
		try {
	
                            /* le code suivant ne change pas selon les methodes
                             * il s'occupe d'envoyer la requete et de creer l'objet wsresponse
                             * qui contient le dom
                             */
                            URLConnection connection = new URL(url).openConnection();
                            connection.setDoOutput(true); // configure la requete en POST.
                            connection.setRequestProperty("Accept-Charset", charset);
                            connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=" + charset);
                            OutputStream output = null;
			    output = connection.getOutputStream();
			    output.write(query.getBytes(charset));
			    //la requête est effectivement envoyée des qu'on tente de récupérer la reponse
			    InputStream response = connection.getInputStream();
			    //prod code : WSResponse resp=new WSResponse(response);	
			    //debug code:
			    WSResponse resp=WSResponse.makeResponseDebug(response);
			    response.close();
                            /*
                             * fin du code de recuperation du dom
                             */
                            
		} catch (IOException x) {
			     x.printStackTrace();
		}
	}
}
